/**
 * 拖拉者，运输其他不可移动单位
 */

let baser = require("./baser");

// 返回baser的内部生命函数
module.exports = function () {
    return baser(
        /**
         * 准备函数，连接单位
         * @param {Creep} creep
         */
        function (creep) {
            if (!creep.memory.task)
                return 3;
            // if (creep.memory.pull)
            //     return 2;
            // 还未连接
            if (creep.actionPullStart(creep.memory.task) == 1)
                return 1;
            return 2;
        },
        /**
         * 工作函数，运输，脱离
         * @param {Creep} creep
         */
        function (creep) {
            if (!creep.memory.task)
                return 3;
            // 还未脱离
            if (creep.actionPullEnd(creep.memory.task) == 1)
                return 2;
            // 脱离成功，消除标记
            delete creep.room.memory.haspulltasks[creep.memory.task];
            creep.memory.task = null;
            return 3;
        },
        /**
         * 结束函数，等待任务，闲逛或其它
         * @param {Creep} creep
         */
        function (creep) {
            // 接受任务
            if (creep.room.memory.pulltasks &&
                creep.room.memory.pulltasks.length) {
                // // 东西先存储
                // if (creep.store[RESOURCE_ENERGY] > 50) {
                //     // 清掉id，强制存储
                //     creep.memory.structureid = 0
                //     creep.actionStore();
                //     return 3;
                // }
                creep.memory.task = creep.room.memory.pulltasks[0];
                creep.room.memory.pulltasks.splice(0, 1);
                return 1;
            }
            // // 搬运工作
            // if (creep.store[RESOURCE_ENERGY] < 5) {
            //     creep.actionWithdraw();
            // }
            // else {
            //     creep.actionStore();
            // }
            return 3;
        });
}